約 4,328,234 件
https://w.atwiki.jp/abwiki/pages/211.html
DLL(でるる)とは、Dynamic Link Libraryの略でABの真の分割コンパイルを行う唯一の手法のことである。
https://w.atwiki.jp/sida/pages/13.html
TinySchemeの外部関数の作り方(Windows用) Cで外部関数を定義できます。 DLLを使って動的に拡張する仕組みも用意されています。 DLLの読み込みかた (load-extension 拡張子無しのファイル名 ) DLLの構造 init_ 拡張子無しのファイル名 ()関数が必要です。 load-extensionしたときに最初にコールされます。 foo.dllだったらinit_foo() 外部関数の定義もここでやります。 外部関数の構造 引数 戻り値 インターフェース関数 "scheme"構造体内に定義されていて外部関数が使うことができる。 ドキュメントでは As of v.1.17, the canonical way for a foreign function in a DLL to manipulate Scheme data is using the function pointers in sc- interface. のように書いてあってサンプルのコードにも sc- interface- mk_symbol(sc,"square") のように書いてあるが実際には sc- vptr- mk_symbol(sc,"square") のようになっている。 void (*scheme_define)(scheme *sc, pointer env, pointer symbol, pointer value); pointer (*cons)(scheme *sc, pointer a, pointer b); pointer (*immutable_cons)(scheme *sc, pointer a, pointer b); pointer (*reserve_cells)(scheme *sc, int n); pointer (*mk_integer)(scheme *sc, long num); pointer (*mk_real)(scheme *sc, double num); pointer (*mk_symbol)(scheme *sc, const char *name); pointer (*gensym)(scheme *sc); pointer (*mk_string)(scheme *sc, const char *str); pointer (*mk_counted_string)(scheme *sc, const char *str, int len); pointer (*mk_character)(scheme *sc, int c); pointer (*mk_vector)(scheme *sc, int len); pointer (*mk_foreign_func)(scheme *sc, foreign_func f); void (*putstr)(scheme *sc, const char *s); void (*putcharacter)(scheme *sc, int c); int (*is_string)(pointer p); char *(*string_value)(pointer p); int (*is_number)(pointer p); num (*nvalue)(pointer p); long (*ivalue)(pointer p); double (*rvalue)(pointer p); int (*is_integer)(pointer p); int (*is_real)(pointer p); int (*is_character)(pointer p); long (*charvalue)(pointer p); int (*is_vector)(pointer p); long (*vector_length)(pointer vec); void (*fill_vector)(pointer vec, pointer elem); pointer (*vector_elem)(pointer vec, int ielem); pointer (*set_vector_elem)(pointer vec, int ielem, pointer newel); int (*is_port)(pointer p); int (*is_pair)(pointer p); pointer (*pair_car)(pointer p); pointer (*pair_cdr)(pointer p); pointer (*set_car)(pointer p, pointer q); pointer (*set_cdr)(pointer p, pointer q); int (*is_symbol)(pointer p); char *(*symname)(pointer p); int (*is_syntax)(pointer p); int (*is_proc)(pointer p); int (*is_foreign)(pointer p); char *(*syntaxname)(pointer p); int (*is_closure)(pointer p); int (*is_macro)(pointer p); pointer (*closure_code)(pointer p); pointer (*closure_env)(pointer p); int (*is_continuation)(pointer p); int (*is_promise)(pointer p); int (*is_environment)(pointer p); int (*is_immutable)(pointer p); void (*setimmutable)(pointer p); void (*load_file)(scheme *sc, FILE *fin); void (*load_string)(scheme *sc, const char *input);
https://w.atwiki.jp/safari3cowiki-room1/pages/22.html
Safari/WebKitは、VisualC++8 SP1でコンパイルされています これまで事情により、VC6/VC7/VC7.1で開発されていた方は、Manifestの扱いに戸惑われるかもしれません こと、Windows XP以上では、msvcr80.dll等を、パスの通ったディレクトリに配置するだけでは動作しません。 http //msdn2.microsoft.com/ja-jp/library/ms235342.aspx デバッガに習熟されている方は、… Nightly Buildsに、.pdbファイルが同梱されています ただし、.pdb ファイルバージョンが新しいので、環境によっては、読めないかも…。 Core Services for Windows(仮称)で遊ぶ ビルド用として、Core Services for Windows(仮称)のヘッダとリンクライブラリが提供されています 自己責任で御試用ください^^ もちろん、自力でビルドするときは必須です WebKit Support Library (直リンありません。License(英文)をお読みください) http //developer.apple.com/opensource/internet/webkit_sptlib_agree.html WebKit Auxiliary Library (直リン. zlib,icu,sqlite3などのヘッダと、リンクライブラリのようです) http //developer.apple.com/opensource/internet/WebKitAuxiliaryLibrary.zip ところで、WebKitを呼ぶ時もそうなのですが、CoInitialize()(必要なら)に加え、 extern "C" BOOL InitializeCoreGraphics(); これを呼ばないと、妙な引っかかり方をして落ちるようです。 …まさか、そんなことだったとは。(ボソ WebKitをCoCreateInstance()で召喚するときに、必ずしもアプリケーションは CoreGraphics.dllの位置なんて知らないはずですから、クラスファクトリあたりが、 適正にInitializeCoreGraphics()を呼んでてくれないとって気がするのですが。 …将来のバージョンでは、修正されるのかも。しれません 参考 (順不同 β登場頃の記事をあたってみてください) http //d.hatena.ne.jp/ahya365/ http //d.hatena.ne.jp/gyuque/ http //hmdt.jp/
https://w.atwiki.jp/lgp4/pages/24.html
DLL関数 DLLから関数を呼び込み、新しい機能や管理が可能になります EXFUNC DLL呼び出し DLL側にあらゆる管理を書くことで、アップデートをDLLだけで済ますことが可 C言語やOS知識も若干必要 EXFUNC p1 p2 (引数1,...引数n), p3, p4 p1 = 返り値 p2 = LGP内関数名 p3 = DLLファイル名 p4 = DLL内関数名 EXFUNC stat MSGPUT(a,b$,c$,d),"User32.dll","MessageBoxA" K = MSGPUT(0,"テスト","テストです",0)
https://w.atwiki.jp/kh_0/pages/33.html
ラッパーDLL このページを編集 トップページ 自分流:コーディングの決まり事 ラッパーDLL デザインパターン Contents ラッパーDLLについて 動的なDLL読み込み 学校の課題の関連で、DLLを切り替えてロードしながら使用したい事態が発生した。 その際に調べたことなど、うんぬん。 ラッパーDLLについて http //msdn.microsoft.com/library/ja/jpdnsql7/htm/btrieve5.asp?frame=true 動的なDLL読み込み 今回はラッパーを作成せず、DLLの動的切り替えで補った。 動的切り替えを行うには、 HMODULE LoadLibrary(LPCTSTR lpFileName); FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName); BOOL FreeLibrary(HMODULE hModule); の三つの関数を用いる。 HMODULE LoadLibrary(LPCTSTR lpFileName); lpFileNameに入ったファイル名のdllをロードする。 成功 ライブラリアクセス用のhModule 失敗 NULL FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName); ロードされたdllから呼び出したい関数へのアドレスを取得する。注意点は、戻り値を受け取りたい関数の型にキャストして受け取ること。 BOOL FreeLibrary(HMODULE hModule); dllを解放する。
https://w.atwiki.jp/tfcfuji/pages/46.html
DLL 呼び出しに関連する事柄 __stdcall の説明 http //keicode.com/winprimer/wp07.php dllexport 他の説明 http //hp.vector.co.jp/authors/VA023539/tips/dll/006.htm class の export http //www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm
https://w.atwiki.jp/mugwortsoft/pages/14.html
Ceres.dll Ceres.dllとは、ゲームを作成する際に最も面倒なウィンドウの生成と描画処理の初期化を行うベースエンジンです。 これにゲーム処理を追加すると簡単にゲームが作成できます。 基本的に以下の処理を記述すればゲームができます。 関数名 説明 InitializeGame 初期化処理を記述します。ゲームで使用する変数等は全てここで初期化してください。 FinalizeGame 終了処理を記述します。ゲームで確保したメモリ等はここで解放してください。 ActivateGame ゲームがアクティブになった時に呼ばれます。 DeactivateGame ゲームが非アクティブになった時に呼ばれます UpdateGame ゲームのメイン処理です。ゲームの更新内容を記述してください DrawGame ゲームの描画処理です。
https://w.atwiki.jp/gdiplusplus/pages/48.html
注意 FreeType について freetype.dllの入手GDI++専用 Uploader の freetype.dll を使う場合 GnuWin32 の freetype.dll を使う場合 注意 基本的に、新しいバージョンのものを使用します。 このページの情報は古い可能性があります。最新版の情報などは2chスレを各自追いましょう。 バージョン2.3.5以前に複数の欠陥。2.3.6で修正されています( http //secunia.com/advisories/30600/ )。 FreeType について Portions of this software are copyright (c) 2005-2007 The FreeType Project (www.freetype.org). All rights reserved. freetype.dllの入手 GDI++専用 Uploader の freetype.dll を使う場合 gdi0869.7z FreeType2.3.7 gdi0866.zip FreeType2.3.6 gdi0856.zip FreeType2.3.5(?) / これ以前のバージョンには複数の欠陥が確認されています。 gdi0467(ft232.zip) gdi0434(ft231.zip) gdi0420(ft230.zip) gdi0299(freetype221.zip) GnuWin32 の freetype.dll を使う場合 バージョン2.3.5以前で確認された複数の欠陥は2.3.6で修正されましたが、GnuWin32のFreeType2.3.6以降はまだないようです。 http //sourceforge.net/projects/gnuwin32/
https://w.atwiki.jp/lookworld/pages/27.html
■ASP.NET(C#)からDLL(VC++)の呼び出しについて ASP.NETから、ActiveXのDLL を呼び出す。 例:XXX01.DLLを呼び出す場合 ①XXX01.DLLを利用するため、以下のコマンドにて、レジストリへの登録を行う。 [regsrv32 SZA01.DLL] ②以下のコード記入例にて、XXX01.DLLを使用。 コード記入例: //オブジェクトを生成する XXX01.EXECSERVERAPClass xxx01 = new XXX01.EXECSERVERAPClass(); //ジョブを起動する iRet = xxx01.SZAP_CREATEJMSS(Cl_name, strJobID, strJoken,out intRet, ref intJmss); ■(1)ASP.NET(C#)から、既存のDLL(VC++)の呼び出し方法 ①ASP.NET(C#)から、ActiveX DLL(VC++)を呼び出す場合、直接ASP.NETプロジェクトへ参照して使用する。 参照手順: 「ASP.NETプロジェクトを開く」→「ソリューションエクスプローラ」→「参照設定」→「参照の追加画面」→「参照(B)」の順で直接使用するDLLを参照する。 ②ASP.NET(C#)から、普通DLL(VC++)にてextern “c”で定義したメソッドを呼び出す場合、DllImportにより使用する。 記入例: [DllImport( DLL名.DLL , EntryPoint= 関数名 , SetLastError=true)] private static extern 型 関数名(引数1, 引数2, …); VC側 extern C void __declspec(dllexport) APIENTRY 関数名 (LPCSTR 引数1, LPCSTR 引数2) (2)ASP.NET(C#)から、C#にて作成されたDLLの呼び出し方法 ASP.NET(C#)から、C#にて作成されたDLLを呼び出す場合、直接ASP.NETプロジェクトへ参照して使用する。 参照手順: 「ASP.NETプロジェクトを開く」→「ソリューションエクスプローラ」→「参照設定」→「参照の追加画面」 →「参照(B)」の順で直接使用するDLLを参照する。 使用例: クラス名 obj = new コンストラクタメソッド(…); 戻り値 = obj.メソッド名(…);
https://w.atwiki.jp/civilization/pages/290.html
MOD/作成情報/CvGameCoreDLL.dllの作り方 MOD/作成情報/CvGameCoreDLL.dllの作り方 [#p81ecb84] 概要 [#ya1ba6e4] 参考URL [#v76addc5] Visual C++ 2008 Express Edition のインストール [#e3c873d8] Visual C++ Toolkit 2003 のインストール [#qdb5b418] マルチスレッドライブラリのダウンロード [#k67f6eb7] Microsoft R Windows Server 2003 R2 Platform SDK のインストール [#y4c651ce] SDKとmakefileの入手 [#m19b521d] プロジェクトの作成 [#w94e6fb6] ビルド [#ea3b5844] 動作確認 [#v5811ab9] 概要 Visual C++ 2008 Express Editionを使ってCvGameCoreDLL.dllを作る方法を説明します。Civ4 BtS 3.13 日本語版を使用。 参考URL 第9回CivilizationIVMOD解説講座‐ニコニコ動画(ββ) この文書はほぼこの動画をテキスト化したものです。動画の作者の人ありがとう。 第10回CivilizationIVMOD解説講座‐ニコニコ動画(ββ) BtS 3.13 用SDKの入手法 Installing and using the SDK - Civilization Fanatics Forums Civfanaticsのスレッド Civilization Fanatics Forums - Downloads Database - Makefile/Instructions BTS 3.17 SDK / Debugging Visual C++ 2008でSDKを開発する方法の解説。このページを書いてから存在に気付いたぜ…… Visual C++ 2008 Express Edition のインストール http //www.microsoft.com/japan/msdn/vstudio/Express/ #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 上記URLからダウンロードしてセットアップを実行。 Visual C++ Toolkit 2003 のインストール http //kael.civfanatics.net/files/VCToolkitSetup.exe マルチスレッドライブラリのダウンロード http //kael.civfanatics.net/files/msvcrt.lib http //kael.civfanatics.net/files/msvcrtd.lib http //kael.civfanatics.net/files/msvcprt.lib C \Program Files\Microsoft Visual C++ Toolkit 2003\lib に上記の3ファイルを置く。 Microsoft R Windows Server 2003 R2 Platform SDK のインストール http //www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB SDKとmakefileの入手 CvGameCoreDLL.dllのソースコードとビルドに必要なライブラリがSDKとしてBtS英語版には同梱されています。しかし日本語版には含まれていないので、どこからか探してくる必要があります。今回はCiv4 BTS Unofficial Patchのリポジトリに入っている修正前のSDKを使います。 http //civ4btspatch.svn.sourceforge.net/viewvc/civ4btspatch/CvGameCoreDLL/trunk/?pathrev=2 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) ページ下部の「Download GNU tarball」からダウンロードして解凍。 パッチ付属のSDKを使う場合、makefileが含まれていないため、この辺から別途makefileを入手し、CvGameCoreDLL直下に放り込む。 TOOLKIT=D /Programme/Microsoft Visual C++ Toolkit 2003/ PSDK=D /Programme/Microsoft Platform SDK のパスは自分の環境に合わせて修正すること。 プロジェクトの作成 Visual C++ 2008 を起動してプロジェクトを新規作成。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 左ツリー「プロジェクトの種類」の「全般」を選択、画面右テンプレートで「メイクファイル プロジェクト」を選択。画面下のプロジェクト名と保存場所は適宜。「ソリューションのディレクトリを作成」はとりあえずオフに。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) ウィザードで設定。 デバッグ構成の設定 ビルドコマンドライン nmake Debug 消去コマンド nmake clean_Debug #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) リリース構成の設定 デバック構成と同じ off ビルドコマンドライン nmake Final_Release 消去コマンド nmake clean_Final_Release #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 入力後「完了」で設定終了。 ダウンロードしたSDKのファイルをすべてプロジェクトのフォルダにコピー #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) ビルド ビルドの対象をReleaseにして #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 開始! #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 文字化けでエラー。CvGameTextMgr.cpp 2092行をとりあえずコメントアウトして凌ぐ。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) 再びビルドして無事成功。[プロジェクトフォルダ]\Final_Release\CvGameCoreDLL.dll が目的のdllです。MODS\[MOD名]\Assets に置けばOK。 動作確認 CvUnit canMove() で常に true を返すようにしてみる。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) できた CvGameCoreDLL.dll を My Documents\My Games\Beyond the Sword(J)\MODS\DllTest\Assets にコピーして civilization を起動、MOD DllTest をロード。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (50%) いくらでも移動できるようになりました。作成したdllが働いていることが分かります。